public class Button {
  
  //Coordenadas de la posición del botón.
  private int x;
  private int y;
  //imagen del botón
  PImage image;
  //Imagen cuando se pasa sobre el botón
  PImage overIcon;
  //tamaño del botón(cuadrado)
  int size;
  Action action;
  
  public Button(PImage image, PImage overIcon, int x, int y, int size, Action action) {
    this.image = image; 
    this.x = x;
    this.y = y;
    this.size = size;
    this.overIcon = overIcon;
    this.action = action;
  }
  
  public int getX() {
    return this.x;
  }
  public int getY() {
    return this.y;
  }
  
  public void setX(int x) {
    this.x = x;
  }
  
  public void setY(int y) {
    this.y = y;
  }
  
  public void setSize(int size) {
    this.size = size;
  }
  
  public void setImage(PImage image) {
    this.image = image;
  }
  
  public void setOverIcon(PImage overIcon) {
    this.overIcon = overIcon;
  }
  
  public Action getAction() {
    return this.action;
  }
  
  
  //Se dibuja el botón
  public void drawButton(boolean isOver) {
    if(!isOver) {
       image(image, this.x , this.y ,this.size ,this.size);
    }
    else {
       image(overIcon, this.x , this.y ,this.size ,this.size);
    }
  }
  
  /*recibe las coordenadas del mouse para saber si el cursor está en el ícono*/
  public boolean isInside(int mX, int mY) {
      boolean inside = false;
      if(mX > this.x && mX < this.x+this.size && mY > this.y && mY < this.y+this.size) {
         inside = true;
      }
      return inside;
  }
  
  
  /*Se ejecuta cuando el cursor está dentro del botón*/
  public void mouseOverBotton() {
      //se dibuja el botón con el icono del cursor encima
      drawButton(true);
  }
}
